- Ask clarifying questions
- Key requirements, customer profile, what assumptions will customers make (is it fast and secure?), expectations, what would growth look like
- Fulfilling Requirements
- Create a design for a system that fulfills captured requirements (e.g., constraints, scalability, maintenance).
- Capacity estimates, justification of design choices, best practices for the choice you made
- Designing for Performance
- Design for operational performance and plans for failure and can measure the results (e.g., metrics).
- Identify Shortcomings
- Identify potential shortcomings and tradeoffs with different designs (e.g., performance, fault, tolerance, dependencies).